
package com.jf.cloud.multishop.mapper;

import com.jf.cloud.multishop.dto.ShopBankCardDTO;
import com.jf.cloud.multishop.model.ShopBankCard;
import com.jf.cloud.multishop.vo.ShopBankCardVO;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @author zz
 * @Date 2021/4/25 17:06
 */
public interface ShopBankCardMapper {
    /**
     * 获取银行卡信息列表
     * @return 银行卡信息列表
     */
    List<ShopBankCard> list();

    /**
     * 根据银行卡信息id获取银行卡信息
     *
     * @param shopBankCardId 银行卡信息id
     * @return 银行卡信息
     */
    ShopBankCardVO getByShopBankCardId(@Param("shopBankCardId") Long shopBankCardId);

    /**
     * 保存银行卡信息
     * @param shopBankCard 银行卡信息
     */
    void save(@Param("shopBankCard") ShopBankCard shopBankCard);

    /**
     * 更新银行卡信息
     * @param shopBankCard 银行卡信息
     */
    void update(@Param("shopBankCard") ShopBankCard shopBankCard);

    /**
     * 根据银行卡信息id删除银行卡信息
     * @param shopBankCardId
     */
    void deleteById(@Param("shopBankCardId") Long shopBankCardId);

    /**
     * 根据店铺id获取银行卡列表
     * @param shopId
     * @return
     */
    List<ShopBankCardVO> listByShopId(@Param("shopId") Long shopId);

    /**
     * 批量插入店铺银行卡信息
     * @param shopBankCardDTOList
     * @param shopId
     */
    void insertBatch(@Param("shopBankCardList") List<ShopBankCardDTO> shopBankCardDTOList, @Param("shopId") Long shopId);

    /**
     * 根据店铺id批量删除该店铺下的银行卡信息
     * @param shopId
     */
    void deleteByShopId(@Param("shopId") Long shopId);

    /**
     * 设置银行卡为主账号
     * @param shopBankCardId
     * @param shopId
     */
    void setPrimary(@Param("shopBankCardId") Long shopBankCardId, @Param("shopId") Long shopId);

    /**
     * 设置银行卡不为主账号
     * @param shopBankCardId
     * @param shopId
     */
    void setNotPrimary(@Param("shopBankCardId")Long shopBankCardId, @Param("shopId") Long shopId);

    /**
     * 根据店铺id统计银行卡数量
     * @param shopId
     * @return
     */
    int countByShopId(Long shopId);
}
